package com.cabal.auth.facade;

import com.cabal.auth.dto.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;


@Api(tags="cabal更新文件下载")
@RequestMapping(value = "/api/cabal/cabalUpdateClient")
public interface CabalUpdateClientFacade {

    @PostMapping("downloadUpdateFile")
    void downloadUpdateFile(@RequestBody CabalAuthDTO cabalAuthDTO, HttpServletResponse httpServletResponse);

    @GetMapping("getLatestVersion")
    String getLatestVersion(@RequestParam("sign") String sign, @RequestParam("timestamp") String timestamp);

    @GetMapping("getUpdateFileSize")
    String getUpdateFileSize(@RequestParam("sign") String sign, @RequestParam("timestamp") String timestamp);

    @PostMapping("receiveClientInfo")
    String receiveClientInfo(@RequestBody CabalClientInfoDTO cabalClientInfoDTO, HttpServletRequest request);

    @PostMapping("updateAccountPassword")
    String updateAccountPassword(@RequestBody UpdateAccountPasswordDTO updateAccountPasswordDTO, HttpServletRequest request);

    @GetMapping("getFileMd5Value")
    Map<String, String> getFileMd5Value(@RequestParam("sign") String sign, @RequestParam("clientVersion") String clientVersion, @RequestParam("timestamp") String timestamp, HttpServletRequest request);

    @PostMapping("updateLoginState")
    String updateLoginState(@RequestBody CabalClientInfoDTO cabalClientInfoDTO, HttpServletRequest request);

    @GetMapping("getMapIds")
    String getMapIds(@RequestParam("sign") String sign, @RequestParam("timestamp") String timestamp);

    @PostMapping("sendKilledMessage")
    String sendKilledMessage(@RequestBody SendKilledMessageDTO sendKilledMessageDTO, HttpServletRequest request);

    @ApiOperation("发送副本记录")
    @PostMapping("/sendDungeonRecord")
    String sendDungeonRecord(@RequestBody SendDungeonRecordDTO sendDungeonRecordDTO, HttpServletRequest request);

    @GetMapping("getExternalCheats")
    Map<String, String> getExternalCheats(@RequestParam("sign") String sign, @RequestParam("timestamp") String timestamp, HttpServletRequest request);

    @GetMapping("banAccount")
    String banAccount(@RequestParam("sign") String sign, @RequestParam("account") String account, @RequestParam("timestamp") String timestamp, @RequestParam("externalCheatsProcessName") String externalCheatsProcessName);

    @ApiOperation("GMBUFF充值接口")
    @PostMapping("/rechargeGmBuff")
    String rechargeGmBuff(@RequestBody CabalCharacterGmBuffDTO cabalCharacterGmBuffDTO);

    @ApiOperation("更新开店状态")
    @PostMapping("updateShopState")
    String updateShopState(@RequestBody UpdateShopStateDTO updateShopStateDTO, HttpServletRequest request);

    @ApiOperation("检查GMBUFF")
    @GetMapping("/checkGmBuff")
    String checkGmBuff(@RequestParam("account") String account);

    @ApiOperation("极品装备拾取全服公告")
    @PostMapping("/pickUpItemNotice")
    String pickUpItemNotice(@RequestBody PickUpItemNoticeDTO pickUpItemNoticeDTO);

    @ApiOperation("制造公告")
    @PostMapping("/craftItemNotice")
    CraftItemNoticeResponseDTO craftItemNotice(@RequestBody CraftItemDTO craftItemDTO);

    @ApiOperation("查询副本传送地图配置ID")
    @GetMapping("/getWarpIdByDungeonTargetId")
    String getWarpIdByDungeonTargetId(@RequestParam("dungeonTargetPreId") String dungeonTargetPreId, @RequestParam("dungeonTargetBackId") String dungeonTargetBackId);

    @ApiOperation("扣除账号商城币/贡献积分")
    @GetMapping("/deductMallCoinHandle")
    String deductMallCoinHandle(@RequestParam("account") String account, @RequestParam("deductType") String deductType);

    @ApiOperation("根据账号获得抽奖次数")
    @GetMapping("/getPrizeDrawCount")
    String getPrizeDrawCount(@RequestParam("account") String account);

    @ApiOperation("根据账号扣除抽奖次数")
    @GetMapping("/deductPrizeDrawCount")
    String deductPrizeDrawCount(@RequestParam("account") String account);

    @ApiOperation("记录中奖日志")
    @GetMapping("/recordPrizeDrawLog")
    String recordPrizeDrawLog(@RequestParam("account") String account, @RequestParam("rewardLevel") String rewardLevel);

    @ApiOperation("获取VIP特效状态")
    @GetMapping("/getVipSpecialEffectsStatus")
    String getVipSpecialEffectsStatus(@RequestParam("characterIdValue") String characterIdValue);

    @ApiOperation("修改VIP特效状态")
    @GetMapping("/updateVipSpecialEffectsStatus")
    String updateVipSpecialEffectsStatus(@RequestParam("characterIdValue") String characterIdValue);


}



